home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / ungepackte_daten / 1993 / 3 / 02 / automobil / bilanz / source / source.ampk / BilanzMain.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-01  |  6.3 KB  |  166 lines

  1. /* Bilanz V1.7   © 1992-1993 Stefan Wagener
  2.    Haushaltskostenberechnung */
  3.  
  4. #include "Bilanz.h"
  5. #include <workbench/startup.h>
  6.  
  7. struct NewWindow WindowData = {
  8.   0,0,640,256,0,1,    /* Left, Top, Width, Height, DetailPen, BlockPen */
  9.   CLOSEWINDOW | MOUSEBUTTONS | RAWKEY | INTUITICKS,
  10.   WINDOWDRAG | WINDOWDEPTH | WINDOWCLOSE | SMART_REFRESH |
  11.   ACTIVATE | RMBTRAP ,
  12.   0, 0,            /* FirstGadget, CheckMark   */
  13.   (UBYTE *)"Bilanz V1.7   © 1992 Stefan Wagener",
  14.   0,0,640,200,640,256, /* Screen, BitMap, MinWidth,Height,MaxWidth,Height */
  15.   WBENCHSCREEN };
  16.  
  17. struct IntuitionBase *IntuitionBase;
  18. struct GfxBase       *GfxBase;
  19. struct Device        *ConsoleDevice = NULL;
  20. struct IOStdReq       ioStdReq;
  21.  
  22. void main(argc,argv)
  23. int argc;
  24. union {
  25.   char **args;
  26.   struct WBStartup *msg;
  27. } argv;
  28. {
  29.   int i, x, y, sh, key;
  30.   
  31.   if (IntuitionBase = (struct IntuitionBase *)
  32.       OpenLibrary("intuition.library", 0L)) {
  33.     if (GfxBase = (struct GfxBase *)
  34.         OpenLibrary("graphics.library", 0L)) {
  35.       if (!(OpenDevice("console.device",-1L,(struct IORequest *)&ioStdReq,0L))) {
  36.         ConsoleDevice = ioStdReq.io_Device;
  37.         if (win = (struct Window *) OpenWindow(&WindowData)) {
  38.           RP = win->RPort;
  39.  
  40.           if      (argc == 0) strcpy(file,argv.msg->sm_ArgList[1].wa_Name);
  41.           else if (argc == 2) strcpy(file,argv.args[1]);
  42.           else                strcpy(file,FILENAME);
  43.           
  44.           GetClock();
  45.           Start();
  46.           UpdateFilter(-1);
  47.           do {
  48.             GetMessage();
  49.             key = (class & RAWKEY && code<128) ? 1 : 0;
  50.             x = win->MouseX; y = win->MouseY;
  51.             sh = (qualifier&3L) ? 1 : 0;    /* SHIFT pressed ? */
  52.             if (class & INTUITICKS) {
  53.               if (status) {    /* clear status after a while */
  54.                 if (--counter <= 0) { counter = status = 0; StatusClr(); }
  55.               }
  56.               PrintDate();
  57.             }
  58.             else if (qualifier & 0x4000L || key) {
  59.               if (entrygadgets) { /* gadgets for entries visible ? */
  60.                 if      (MouseInFrame( 80,49,115,59) ||
  61.                          code==76 && sh) EntryFirst();
  62.                 else if (MouseInFrame(200,49,235,59) ||
  63.                          code==77 && sh) EntryLast();
  64.                 else if (MouseInFrame(120,49,155,59) ||
  65.                          code==76) EntryBack();
  66.                 else if (MouseInFrame(160,49,195,59) ||
  67.                          code==77) EntryNext();
  68.               }
  69.               if (MouseInFrame(60,15,90,25) ||    /* year back */
  70.                   sh && code==79 /* Shift LEFT */) {
  71.                 Gadget("<",60,15,90,25,1);
  72.                 YearChange(-1); WaitNoButton();
  73.                 Gadget("<",60,15,90,25,0);
  74.               }
  75.               else if (MouseInFrame(134,15,164,25) ||    /* year forward */
  76.                        sh && code==78 /* Shift RIGHT*/) {
  77.                 Gadget(">",134,15,164,25,1);
  78.                 YearChange(1); WaitNoButton();
  79.                 Gadget(">",134,15,164,25,0);
  80.               }
  81.               else if (MouseInFrame(60,32,90,42) || code==79 /* LEFT */) {
  82.                 Gadget("<",60,32,90,42,1);
  83.                 MonthBack(); WaitNoButton();
  84.                 Gadget("<",60,32,90,42,0);
  85.               }
  86.               else if (MouseInFrame(134,32,164,42) || code==78 /* RIGHT */) {
  87.                 Gadget(">",134,32,164,42,1);
  88.                 MonthNext(); WaitNoButton();
  89.                 Gadget(">",134,32,164,42,0);
  90.               }
  91.               else if (MouseInFrame(240,49,289,59) || code==54 /* N */) {
  92.                 Gadget("Neu",240,49,289,59,1);
  93.                 EntryNew();
  94.                 Gadget("Neu",240,49,289,59,0);
  95.               }
  96.               else if (MouseInFrame(360,49,480,59) ||
  97.                 code==34 && !sh /* d */) {
  98.                 Gadget("Monat drucken",360,49,480,59,1);
  99.                 OutPrinter();
  100.                 WaitNoButton();
  101.                 Gadget("Monat drucken",360,49,480,59,0);
  102.               }
  103.               else if (MouseInFrame(584,49,629,59) ||    /* change way of output */
  104.                        code==32 /* A */) {
  105.                 modus = 1 - modus;
  106.                 Gadget("Voll",584,49,629,59,modus);
  107.                 OutClr(); Out(count,MAXLINE,0);
  108.                 WaitNoButton();
  109.               }
  110.               else if (MouseInFrame(584,66,629,76) ||    /* include or exclude filter */
  111.                        code==23 /* I */) {
  112.                 include = 1 - include;
  113.                 if (include) Gadget("INCL",584,66,629,76,1);
  114.                 else         Gadget("EXCL",584,66,629,76,0);
  115.                 OutStart();
  116.                 StatusYear(1);
  117.                 WaitNoButton();
  118.               }
  119.             }
  120.             if (MouseIn(64,65,FILTER*74+63,77) ||    /* filtergadgets */
  121.                 code>=80 && code<=86) {
  122.               if (code>=80 && code<=86) i = code-80;
  123.               else {
  124.                 i = (x - 64)/74;
  125.                 if (code==MENUDOWN) sh=1;
  126.                 else if (code==SELECTDOWN) sh=0;
  127.                 else sh=-1;
  128.               }
  129.               if (sh==1) FilterChange(i);
  130.               else if (!sh) {
  131.                 FilterSwitch(i);
  132.                 OutStart(); StatusYear(1);
  133.               }
  134.             }
  135.             else if (MouseIn(360,49,480,59) && code==MENUDOWN ||
  136.                      code==34 && sh /* D */) {
  137.               Gadget("Monat drucken",360,49,480,59,1);
  138.               OutputDirection(); WaitNoButton();
  139.               Gadget("Monat drucken",360,49,480,59,0);
  140.               OutClr(); Out(count,MAXLINE,0);
  141.             }
  142.             else if (code==SELECTUP) {    /* entries are choosed for changing */
  143.               if (y > 100 && y < 250) {
  144.                 i = (y - 100)/10;
  145.                 if (i>=0 && i<15) {
  146.                   if (i < number) EntryChange(i);
  147.                   else            EntryNew();
  148.                 }
  149.               }
  150.             }
  151.           } while(!(class & CLOSEWINDOW || code==16 /* Q */ ));
  152.           if (changeflag) SaveData(filename);
  153.           DeleteYears();    /* free memory */
  154.           CloseWindow(win);
  155.         }
  156.         else printf("Window kann nicht geöffnet werden!\n");
  157.       }
  158.       else printf("Fehler im Console-Device!\n");
  159.       CloseLibrary((struct Library *)GfxBase);
  160.     }
  161.     else printf("Graphics-Library nicht gefunden!\n");
  162.     CloseLibrary((struct Library *)IntuitionBase);
  163.   }
  164.   else printf("Keine Intuition-Library gefunden!\n");
  165. }
  166.